// 指定解析路径
import { resolve } from 'path'
import { defineConfig, loadEnv } from 'vite'

import vue from '@vitejs/plugin-vue'
import VueSetupExtend from 'vite-plugin-vue-setup-extend' // setup name 组件命名方式

const pathResolve = (dir: string) => resolve(__dirname, dir)

const config = loadEnv('development', './')

console.log('vite.config 配置===================', config)

// https://vitejs.dev/config/
export default defineConfig({
    base: './', // 设置公共基础路径
    plugins: [vue(), VueSetupExtend()],

    define: {
        'process.env': {
            VUE_APP_HOST: '/api',
            ...loadEnv
        }
    },

    resolve: {
        alias: {
            '@': pathResolve('./src'),  // 设置 `@` 指向 `src` 目录
            views: pathResolve('./src/views'), // 设置 `views` 指向 `./src/views` 目录，下同
            assets: pathResolve('./src/assets'),
            components: pathResolve('./src/components')
        },
        extensions: [".ts", ".tsx", ".js"]
    },
    build: {
        outDir: 'dist',   // 指定打包路径，默认为项目根目录下的 dist 目录
        minify: 'esbuild', // 构建时的压缩方式

        terserOptions: { // terser 是一个用于 ES6+ 的 JavaScript 解析器和 mangler/compressor 工具包。可以通过 terserOptions.compress 属性对 js 进行一定的压缩，减少打包文件体积。

            compress: {
                keep_infinity: true,  // 防止 Infinity 被压缩成 1/0，这可能会导致 Chrome 上的性能问题
                drop_console: true,   // 生产环境去除 console
                drop_debugger: true   // 生产环境去除 debugger
            }
        },
        chunkSizeWarningLimit: 1500   // chunk 大小警告的限制（以 kbs 为单位）// chunkSizeWarningLimit默认为500，当打包后单个 chunk 体积超过500就会有警告，在实际项目中太小了，调整为1500
    },
    /* hostname: 'localhost',// 本地启动的服务地址
       https: false,//是否开启https
       ssr: false,//是否服务端渲染
       optimizeDeps: {// 引入第三方的配置
         include: ['axios']
       }, */

    server: {

        port: 4000, // 设置服务启动端口号，如果端口已经被使用，Vite 会自动尝试下一个可用的端口
        open: true, // boolean | string 设置服务启动时是否自动打开浏览器，当此值为字符串时，会被用作 URL 的路径名
        cors: true, // 为开发服务器配置 CORS，配置为允许跨域

        // 设置代理，根据我们项目实际情况配置
        proxy: {
            '/api': {
                target: 'http://dev-manage.hgj.net/ingress-ng/aides/admin', // 后台服务 启动的接口地址
                // target: 'http://manage.hgj.net/ingress-ng/aides/admin',

                changeOrigin: true, // 是否允许不同源
                secure: false,      // 支持https
                // ws: true, // 是否代理websockets

                rewrite: path => path.replace(/^\/api/, '')
            }
        }
    }
})


// package.json   husky 同级
// "lint-staged": {
//   "src/**/*.{ts,vue}": [
//     "eslint --fix"
//   ],
//   "*.vue": [
//     "stylelint --fix  --custom-syntax postcss-html"
//   ]
// }

/* "husky": {
     "hooks": {
       "pre-commit": "lint-staged"
     }
   } */
